package algorithm.middle;

import pojo.TreeNode;

/**
 * @author 江岸
 * @version V1.0
 * @ClassName: FlipEquiv951
 * @description: 我们可以为二叉树 T 定义一个翻转操作，如下所示：选择任意节点，然后交换它的左子树和右子树。
 *
 * 只要经过一定次数的翻转操作后，能使 X 等于 Y，我们就称二叉树 X 翻转等价于二叉树 Y。
 *
 * 编写一个判断两个二叉树是否是翻转等价的函数。这些树由根节点 root1 和 root2 给出。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/flip-equivalent-binary-trees
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 * @date 2021/4/1615:59
 * @since V1.0
 */
public class FlipEquiv951 {
    //递归 二叉树
    public boolean flipEquiv(TreeNode root1, TreeNode root2) {
        if (root1 ==null && root2==null) return true;
        if (root1 !=null && root2 !=null){
            if (root1.val==root2.val){
                boolean A = flipEquiv(root1.left, root2.left) && flipEquiv(root1.right, root2.right);
                boolean B = flipEquiv(root1.left, root2.right) && flipEquiv(root1.right, root2.left);
                return A||B;
            }
        }
        return false;
    }
}
